import { BaseSocket } from './baseSocket';

/**
 * 模型清理
 */
export class ModelClean extends BaseSocket {
  /**
   * 点云清理  提供点云通用清理，去除噪点
   * @param params
   * @returns
   */
  async CloudRefine(params: { root: string }) {
    return await this.execCmd({
      c: 'shape.CloudRefine',
      a: params,
    });
  }

  /**
   * 点云抽稀 提供点云通用抽稀，将点云简化到指定比例
   * @param params
   * @returns
   */
  async CloudSimplify(params: { root: string; ratio?: number }) {
    return await this.execCmd({
      c: 'shape.CloudSimplify',
      a: params,
    });
  }

  /**
   * 点云法向计算 计算点云对应法向
   * @param params
   * @returns
   */
  async CloudNormal(params: { root: string }) {
    return await this.execCmd({
      c: 'shape.CloudNormal',
      a: params,
    });
  }

  /**
   * 点云网格生成 生成点云对应网格
   * @param params
   * @returns
   */
  async CloudMesh(params: { root: string }) {
    return await this.execCmd({
      c: 'shape.CloudMesh',
      a: params,
    });
  }

  /**
   * 网格清理  提供网格通用清理，去除非流形点/边/面，补洞
   * @param params
   * @returns
   */
  async MeshClean(params: { root: string; action: string }) {
    return await this.execCmd({
      c: 'shape.MeshClean',
      a: params,
    });
  }

  /**
   * 网格简化  输入网格与比例，将网格大小简化到对应比例，比例范围 0~1，默认 0.5
   * @param params
   * @returns
   */
  async MeshSimplify(params: { root: string; ratio: number }) {
    return await this.execCmd({
      c: 'shape.MeshSimplify',
      a: params,
    });
  }
}
